<?php

class ModuloSistemasController extends AppController 
{
	
	public $uses = array('ModuloSistema');	
	
	public $bandera = true;
	
	#---------------------------------------------------#
	#---------------Funciones Principales---------------#
	#---------------------------------------------------#
	public function index()
	{  
		$this->layout = 'default_ini';	
	}
	
	public function add_modulo()
	{
		$this->layout = 'default_ini';		
		$this->llenar_combobox_modulo(1);
		if($this->request->is('post') || $this->request->is('put'))
		{
			
			$this->postAddModulo();
				
		}
	}
	
	public function consult_modulo()
	{
		$this->layout = 'default_ini';
	}
	
	public function consult_modulo1($nombre_modulo = null)
	{
		$this->layout = 'default_ini';	
		
		if ($nombre_modulo == "")
		{
			$this->setMessageFlash(2,'error $nombre_modulo',null);
		}
		else
		{
			$this->infoConsultModulo($nombre_modulo);
			if($this->request->is('post') || $this->request->is('put'))
			{
				$this->postConsultModulo();
			}
		}
	}
	
	public function edit_modulo  ($id_modulo = null)
	{
		$this->layout = 'default_ini';	
		if($id_modulo == "")
		{
			$this->setMessageFlash(2,'error $id_modulo',null);
		}
		else 
		{
			$this->llenarInfoModulo(1, $id_modulo);
			if($this->request->is('post') || $this->request->is('put'))
			{
				
				$this->postEditModulo();
			}
			
		}
	}
	
	public function detalle_modulo ($id_modulo = null)
	{
		$this->layout = 'default_ini';		
		if($id_modulo == "")
		{
			$this->setMessageFlash(2,'error $id_modulo',null);
		}
		else 
		{
			$this->llenarInfoModulo(2, $id_modulo);
			
		}
	}
	
	
	
	#---------------------------------------------------#
	#---------------Funciones Secundarias---------------#
	#---------------------------------------------------#
	
	private function setMessageFlash($id,$mensaje,$nombre_mensaje)
	{
		if (is_null($nombre_mensaje))
		{
			$nombre_mensaje = 'flash';
		}
		switch ($id) 
		{
			case 1: // mensaje bueno
				$this->Session->setFlash($mensaje,'default',array('class'=>'success'),$nombre_mensaje);
				break;
			case 2: // mensaje malo
				$this->Session->setFlash($mensaje,'default',array('class'=>'error-message'),$nombre_mensaje);
				break;
			case 3: // mensaje cuidado
				$this->Session->setFlash($mensaje,'default',array('class'=>'notice'),$nombre_mensaje);
				
				break;
			
			default:
				
				break;
		}
	}

	public function getDetalleModulo($id_modulo)
	{
		$this->layout = false;
		if ($this->request->is('get')) 
		{
			$this->llenarInfoModulo(2, $id_modulo);
			$this->render('/Elements/GetDetalleModulo');
		}
	}
	public function getErrors($errors)
	{
		$errores_view = '';
		
		if (array_key_exists('nombre_modulo_sistema', $errors))
		{
			$errores_view = $errores_view .'|'.'Nombre del Modulo'.'++'.$errors['nombre_modulo_sistema'][0];
		}
		
		return $errores_view;
		
		
	}
	public function parserError($error)
	{
		$array_error = array();	
			
		$string_error = explode('|', $error);
		
		for ($i = 0; $i < count($string_error); $i++)
		{
			if ($i != 0)
			{
				$string_problema = explode('++',$string_error[$i]);
					
				array_push($array_error,array(
												'campo' => $string_problema[0],
												'error' => $string_problema[1],
												)
							);
			}
			
		}
		return $array_error;
	}
	public function getEditModulo($id_modulo,$error = null)
	{
		$this->layout = false;
		
		if ($this->request->is('get')) 
		{
			$this->llenarInfoModulo(1, $id_modulo);
			
			if ($error)
			{
				$this->set('errors',$this->parserError($error));	
			}
			else
			{
				$this->set('errors',null);	
			}
			
			$this->render('/Elements/GetEditModulo');
		}
		elseif ($this->request->is('post') || $this->request->is('put') )
		{
				
			$info_modulo = array( 
										'ModuloSistema'=> $this->request->data
									);
			$this->postEditModulo($info_modulo);
		}
		
	}
	
	public function getGridConsultModulo($nombre_modulo)
	{
		
		$this->layout = false;
		if ($this->request->is('get')) 
		{
			
			$this->llenar_modulo($nombre_modulo);
			$this->render('/Elements/GridConsultModuloSistema');
		}
		
	}
	
	
	
	private function postEditModulo($info_modulo)
	{
		$this->ModuloSistema->create();
		if ($info_modulo['ModuloSistema']['modulo_sistema_id'] == 0)
		{
			$info_modulo['ModuloSistema']['modulo_sistema_id'] = null;
		}
		
		$this->ModuloSistema->set($info_modulo);
		
		$error = null;
		
		if ($this->ModuloSistema->validates()) 
		{
		
			if ($this->ModuloSistema->save($info_modulo))
			{
				$this->setMessageFlash(1,'Se guardo los cambios del Modulo',null);
				
			}
			else 
			{
				$this->setMessageFlash(2,'No se guardo los cambios del Modulo',null);
	
			}
		}
		else 
		{
		    $this->setMessageFlash(2, 'No se guardo los cambios del Modulo',null);
			
			$error = $this->getErrors( $this->ModuloSistema->validationErrors);
			
			
		
		}
		
		$this->redirect(array(
											'controller' => 'ModuloSistemas',
											'action' => 'getEditModulo',$this->ModuloSistema->id,$error
									   )
								 );
	}
	
	private function llenarInfoModulo($id_busqueda,$id_modulo)
	{
		if ($id_busqueda == 1) // si es para edit
		{
			$this->llenar_combobox_modulo_edit($id_modulo);
		}
		$this->infoModuloEspecifica($id_modulo);
	}
	
	private function infoModuloEspecifica($id_modulo)
	{
		
		$modulos = $this->ModuloSistema->query('SELECT 
													MS_1.*, MS_2.*, 
													COALESCE(MS_2.nombre_modulo_sistema, "NINGUNO") AS nombre_modulo_per
													FROM modulo_sistemas MS_1
													LEFT OUTER JOIN modulo_sistemas MS_2 ON MS_2.id = MS_1.modulo_sistema_id
													WHERE MS_1.id = '.$id_modulo);
		$this->set('modulos',$modulos);
	}
	
	private function postConsultModulo()
	{
		
		$nombre_modulo_busq = $this->request->data['Consult_Modulo']['nombre_modulo_busq'];
		if ($nombre_modulo_busq == NULL)
		{
			$nombre_modulo_busq = "*";
		}
		
		$this->redirect(array('action' => 'consult_modulo',$nombre_modulo_busq));
		
	}
	
	private function llenar_modulo($nombre_modulo)
	{
		$strqry = 'SELECT MS_1.*, 
					COALESCE(MS_2.nombre_modulo_sistema, "NINGUNO") AS nombre_modulo_per
					FROM modulo_sistemas MS_1
					LEFT OUTER JOIN modulo_sistemas MS_2 ON MS_2.id = MS_1.modulo_sistema_id';
				
		
		if ($nombre_modulo != "*")
		{
			$strqry = $strqry.' WHERE MS_1.nombre_modulo_sistema LIKE "%'.$nombre_modulo.'%"';
		}
		$strqry = $strqry.' ORDER BY MS_1.id ASC';
		$modulos = $this->ModuloSistema->query($strqry);
		$this->set('modulos',$modulos);
		
	}
	
	private function llenar_combobox_sede($id)
	{
		$sedes = $this->Sede->find('all');
		
		
		$arreglo = array();
		
		if ($id == 1)
		{
			array_push($arreglo,array(0 => 'Todos') );
		}
		
		foreach ($sedes as $sede) 
		{
				array_push($arreglo,array($sede['Sede']['id'] => $sede['Sede']['nombre_sede']));
		}
		
		$this->set('sedes',$arreglo);

	}
	
	private function infoConsultModulo($nombre_modulo)
	{
		//$this->llenar_combobox_sede(1);
		$this->llenar_modulo($nombre_modulo);
		$this->set('nombre_modulo',$nombre_modulo);
	}
	
	private function postAddModulo()
	{
		if ($this->request->data['ModuloSistema']['modulo_sistema_id'] == 0)
		{
			$this->request->data['ModuloSistema']['modulo_sistema_id'] = null;
		}
		
		if($this->ModuloSistema->save($this->request->data))
		{
			$this->setMessageFlash(1,"Se guardo el Modulo",null);
		}
		else
		{
			$this->setMessageFlash(2,"No se guardo el Modulo",null);
		}
	}
	
	private function llenar_combobox_modulo_edit($id_modulo)
	{
		$modulos = $this->ModuloSistema->query(
											  		'SELECT *
											  		FROM modulo_sistemas MS
											  		WHERE MS.ID != '.$id_modulo
											  		
											   );
		
		$arreglo = array();
		
		array_push($arreglo,array( 0 => 'Ninguno'));
		
		foreach ($modulos as $modulo) 
		{
				array_push($arreglo,array( $modulo['MS']['id'] =>  $modulo['MS']['nombre_modulo_sistema']));
		}
		
		$this->set('lista_modulos',$arreglo);
	}
	
	private function llenar_combobox_modulo($id)
	{
		$modulos = $this->ModuloSistema->find('all');
		
		$arreglo = array();
		
		if ($id == 1)
		{
			array_push($arreglo,array( 0 => 'Todos'));
		}
		foreach ($modulos as $modulo) 
		{
			array_push($arreglo,array( $modulo['ModuloSistema']['id'] =>  $modulo['ModuloSistema']['nombre_modulo_sistema']));
		}
		
		$this->set('modulos',$arreglo);
	}
}



?>